package eu.epfc.dnet.mastermind.hibernate;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Pierre Buvé & Nicolas Van Damme
 */
public class TlinesHelper {

    Session session = null;
    TgamesHelper tgamesHelper = new TgamesHelper();

    public TlinesHelper() {
        this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    /**
     * Insère une nouvelle ligne dans la base de données.
     * @param tlines 
     */
    public void insertNewLine(Tlines tlines) {
        Transaction tx = session.beginTransaction();
        session.save(tlines);
        tx.commit();
    }

    /**
     * Retourne l'ensemble des lignes pour un game id recu en paramètre.
     * @param gameId
     * @return 
     */
    public List<Tlines> getAllLinesForGameId(int gameId) {
        Transaction tx = session.beginTransaction();
        Query q = session.createQuery("from Tlines lines where tgames.id = '" + gameId + "' order by lines.numLine asc");
        List<Tlines> resultList = q.list();
        return resultList;
    }

    /**
     * Retourne le tour courant pour une partie recue en paramètre.
     * @param gameId
     * @return 
     */
    public int getCurrentTurnForGameId(int gameId) {
        Transaction tx = session.beginTransaction();
        Query q = session.createQuery("select count(*) from Tlines lines where tgames.id = '" + gameId + "'");
        Long nbr = (Long) q.list().get(0);
        return Integer.parseInt(nbr.toString());
    }

    /**
     * Retourne le nombre total de fois que l'utilisateur à proposer une couleur envoyer en paramètre.
     * @param login
     * @param color
     * @return 
     */
    public int getNbrColorUsedForUser(String login, String color) {
        Transaction tx = session.beginTransaction();
        Query q = session.createQuery("select count(*) from Tlines lines where id_game in (select id from Tgames game where tusers.username = '"+login+"') AND (token01='"+color+"' OR token02='"+color+"' OR token03='"+color+"' OR token04='"+color+"')");
        Long nbr = (Long) q.list().get(0);
        return Integer.parseInt(nbr.toString());
    }


}
